#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2023/11/26 16:01
# @Author  : 新猿异码
# @Site    : https://gitee.com/chshao/autotest
# @CSDN    : https://blog.csdn.net/m0_37576542?type=blog
# @File    : __init__.py.py
# @Desc    : 模块功能描述
# @Software: PyCharm
import functools
from autotest.kernel.modle.Variable import Var


# 有此装饰器修饰的方法会被当做用例执行
def test(desc: str = None, reruns: int = 0, marker: str = None, datas=None):
    """
    有此装饰器修饰的方法会被当做用例执行
    :param desc: 用例描述
    :param reruns: 用例失败重跑次数
    :param marker: 用例类别标记
    :param datas: 用例的参数化，list或者函数方法，如果是函数方法则必须返回list
    :return:
    """

    def _wrapper(func):
        Var.Suite.addNode(func.__name__)
        Var.Suite[func.__name__]["reruns"] = reruns
        if marker:
            Var.Suite[func.__name__]["marker"] = marker
        if datas:
            Var.Suite[func.__name__]["datas"] = datas
        if desc:
            Var.Suite[func.__name__]["desc"] = desc

        @functools.wraps(func)
        def _inner(*args, **kwargs):
            ret = func(*args, **kwargs)
            return ret

        return _inner

    return _wrapper
